import themeChangeBehavior from 'tdesign-miniprogram/mixins/theme-change';
const { updatePassword, validatePasswordStrength } = require('../../utils/user-api.js');

Page({
  behaviors: [themeChangeBehavior],
  
  data: {
    formData: {
      oldPassword: '',
      newPassword: '',
      confirmPassword: ''
    },
    showOldPassword: false,
    showNewPassword: false,
    showConfirmPassword: false,
    isSubmitting: false,
    passwordStrength: {
      isValid: false,
      score: 0,
      message: '',
      suggestions: []
    },
    isFirstLogin: false, // 是否为首次登录
    canSkip: false // 是否可以跳过
  },

  onLoad(options) {
    
    // 检查是否为首次登录
    const isFirstLogin = options.firstLogin === 'true';
    const canSkip = options.canSkip === 'true';
    
    this.setData({
      isFirstLogin,
      canSkip
    });

    // 设置页面标题
    wx.setNavigationBarTitle({
      title: isFirstLogin ? '设置新密码' : '修改密码'
    });
  },

  // 输入处理
  onOldPasswordInput(e) {
    this.setData({
      'formData.oldPassword': e.detail.value
    });
  },

  onNewPasswordInput(e) {
    const newPassword = e.detail.value;
    this.setData({
      'formData.newPassword': newPassword
    });
    
    // 简化的密码验证（仅检查是否为空）
    this.validatePassword(newPassword);
  },

  onConfirmPasswordInput(e) {
    this.setData({
      'formData.confirmPassword': e.detail.value
    });
  },

  // 切换密码显示状态
  toggleOldPassword() {
    this.setData({
      showOldPassword: !this.data.showOldPassword
    });
  },

  toggleNewPassword() {
    this.setData({
      showNewPassword: !this.data.showNewPassword
    });
  },

  toggleConfirmPassword() {
    this.setData({
      showConfirmPassword: !this.data.showConfirmPassword
    });
  },

  // 验证密码（已简化）
  validatePassword(password) {
    const result = validatePasswordStrength(password);
    this.setData({
      passwordStrength: result
    });
  },

  // 表单验证（已移除安全限制）
  validateForm() {
    const { oldPassword, newPassword, confirmPassword } = this.data.formData;
    const { isFirstLogin } = this.data;

    // 如果不是首次登录，需要验证旧密码
    if (!isFirstLogin && !oldPassword.trim()) {
      wx.showToast({
        title: '请输入当前密码',
        icon: 'none'
      });
      return false;
    }

    if (!newPassword.trim()) {
      wx.showToast({
        title: '请输入新密码',
        icon: 'none'
      });
      return false;
    }

    if (!confirmPassword.trim()) {
      wx.showToast({
        title: '请确认新密码',
        icon: 'none'
      });
      return false;
    }

    // 验证两次密码是否一致
    if (newPassword !== confirmPassword) {
      wx.showToast({
        title: '两次输入的密码不一致',
        icon: 'none'
      });
      return false;
    }

    // 移除密码强度检查和新旧密码相同检查

    return true;
  },

  // 提交修改
  async onSubmit() {
    if (!this.validateForm()) {
      return;
    }

    if (this.data.isSubmitting) {
      return;
    }

    this.setData({ isSubmitting: true });

    try {
      wx.showLoading({
        title: '修改中...',
        mask: true
      });

      const { oldPassword, newPassword } = this.data.formData;
      const { isFirstLogin } = this.data;

      const params = {
        oldPassword: isFirstLogin ? '' : oldPassword, // 首次登录可能不需要旧密码
        newPassword: newPassword
      };

      const result = await updatePassword(params);
      

      wx.hideLoading();

      if (result.message == "操作成功") {
        wx.showToast({
          title: '密码修改成功',
          icon: 'success',
          duration: 2000
        });

        // 延迟跳转
        setTimeout(() => {
          if (this.data.isFirstLogin) {
            // 首次登录修改密码后跳转到工作台
            wx.switchTab({
              url: '/pages/workbench/workbench',
              fail: () => {
                wx.reLaunch({
                  url: '/pages/workbench/workbench'
                });
              }
            });
          } else {
            // 返回上一页
            wx.navigateBack();
          }
        }, 1500);

      } else {
        wx.showToast({
          title: result.message || '修改失败',
          icon: 'none',
          duration: 2000
        });
      }

    } catch (error) {

      wx.hideLoading();
      wx.showToast({
        title: '网络错误，请重试',
        icon: 'none',
        duration: 2000
      });
    } finally {
      this.setData({ isSubmitting: false });
    }
  },

  // 跳过修改（仅首次登录可用）
  onSkip() {
    if (!this.data.canSkip) {
      return;
    }

    wx.showModal({
      title: '跳过修改密码',
      content: '建议您修改默认密码以确保账户安全，确定要跳过吗？',
      success: (res) => {
        if (res.confirm) {
          wx.switchTab({
            url: '/pages/workbench/workbench',
            fail: () => {
              wx.reLaunch({
                url: '/pages/workbench/workbench'
              });
            }
          });
        }
      }
    });
  },

  // 返回处理
  onBack() {
    if (this.data.isFirstLogin) {
      wx.showModal({
        title: '提示',
        content: '建议您先修改密码以确保账户安全，确定要返回吗？',
        success: (res) => {
          if (res.confirm) {
            wx.navigateBack();
          }
        }
      });
    } else {
      wx.navigateBack();
    }
  }
});